﻿Imports System.Data.Entity
Imports AccesoADatos
Imports Dominio
Module Module1
    Dim contexto As New BaseDeDatosVideo("BaseDeDatosVideo")

    Sub Main()
        Dim bootstrap As New Bootstrap(contexto)

        Dim listaDeSocios As List(Of Socio) = contexto.Socios.ToList()
        ListarSocios("Todos los socios", listaDeSocios)

        listaDeSocios = (From socio In contexto.Socios
                            Where socio.Nombre.Contains("M")
                            Select socio).ToList()
        ListarSocios("Socios que tienen una M en su nombre", listaDeSocios)

        Dim listaDePeliculas As List(Of Pelicula) = contexto.Peliculas.Include("Genero").ToList()
        ListarPeliculas("Todas las películas", listaDePeliculas)

        listaDePeliculas = (From pelicula In contexto.Peliculas.Include("Genero")
                           Where pelicula.Genero.Nombre.Contains("Terror")
                           Select pelicula).ToList()
        ListarPeliculas("Películas de terror", listaDePeliculas)
        listaDePeliculas = (From pelicula In contexto.Peliculas.Include("Genero")
                           Where pelicula.Genero.Nombre.Contains("Romántica")
                           Select pelicula).ToList()
        ListarPeliculas("Películas románticas", listaDePeliculas)

        listaDePeliculas = (From pelicula In contexto.Peliculas.Include("Genero")
                           Where pelicula.Genero.Nombre.Contains("Terror") And pelicula.Nombre.Contains("Muertos Vivos")
                           Select pelicula).ToList()
        ListarPeliculas("Películas románticas que contienen la frase 'Muertos Vivos'", listaDePeliculas)

        listaDePeliculas = (From pelicula In contexto.Peliculas.Include("Genero")
                           Where Not pelicula.Genero.Nombre.Contains("Terror") And Not pelicula.Genero.Nombre.Contains("Aventura")
                           Select pelicula).ToList()
        ListarPeliculas("Películas que no son ni de terror ni de aventura", listaDePeliculas)

        Dim lista = From pelicula In contexto.Peliculas
                    Group pelicula By key = pelicula.Genero
                    Into Group Select tipoDeGenero = key, peliculas = Group
        For Each grupo In lista
            Console.Clear()
            Console.WriteLine(String.Format("Género: '{0}'", grupo.tipoDeGenero.Nombre))
            For Each peli In grupo.peliculas
                Console.WriteLine(String.Format("'{0}': '{1}'", peli.Nombre, peli.Descripcion))
            Next
            Console.ReadKey()
        Next

    End Sub

    Sub ListarSocios(titulo As String, lista As List(Of Socio))
        Console.Clear()
        Console.WriteLine(titulo)
        For Each soc In lista
            Console.WriteLine(String.Format("Socio: {0}, {1} Domicilio: {2} Email: {3}", soc.Apellido, soc.Nombre, soc.Domicilio, soc.Email))
        Next
        Console.ReadKey()
    End Sub

    Sub ListarPeliculas(titulo As String, lista As List(Of Pelicula))
        Console.Clear()
        Console.WriteLine(titulo)
        For Each pelicula In lista
            Console.WriteLine(String.Format("Pelicula: '{0}' Descripcion: '{1}' Genero: '{2}'", pelicula.Nombre, pelicula.Descripcion, pelicula.Genero.Nombre))
        Next
        Console.ReadKey()
    End Sub
    End Module
